package common.serializer.mySerializer;


/**
 * 为对象提供序列化和反序列化的功能
 * 通过静态工厂方法根据类型代码返回具体的序列化器实例
 */
public interface Serializer {
    // 对象序列化为字节数组
    byte[] serialize(Object object);

    // 字节数组反序列化为Java对象,其他方式需要指定消息格式，再根据messageType转化成消息对象
    Object deserialize(byte[] bytes, int messageType);

    // 0 表示Java自带序列化方式；1 表示JSON序列化方式
    int getType();

    static Serializer getSerializerByCode(int code) {
        switch (code) {
            case 0:
                return new ObjectSerializer();
            case 1:
                return new JsonSerializer();
            default:
                return null;
        }
    }
}
